#Область ОписаниеПеременных

&НаКлиенте
Перем УИ_РедакторКодаКлиентскиеДанные Экспорт;

#КонецОбласти

#Область ОбработчикиСобытийФормы

&НаКлиенте
Процедура ПриОткрытии(Отказ)

	УстановитьНадписьТекстВыражения();

	УИ_РедакторКодаКлиент.ФормаПриОткрытии(ЭтотОбъект);

КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	РежимЗагрузки = Параметры.РежимЗагрузки;
	Если РежимЗагрузки = 2 Тогда
		Элементы.ГруппаПередЗаписьюОбъекта.Заголовок = "Перед записью";
		Элементы.ГруппаПриЗаписиОбъекта.Заголовок =    "При записи";
	КонецЕсли;

	Элементы.ГруппаПослеДобавленияСтроки.Видимость = РежимЗагрузки = 1;

	ПередЗаписьюОбъекта = Параметры.ПередЗаписьюОбъекта;
	ПриЗаписиОбъекта = Параметры.ПриЗаписиОбъекта;
	ПослеДобавленияСтроки = Параметры.ПослеДобавленияСтроки;
	
	ТипОбъекта = Параметры.ТипОбъекта;

	УИ_РедакторКодаСервер.ФормаПриСозданииНаСервере(ЭтотОбъект);
	УИ_РедакторКодаСервер.СоздатьЭлементыРедактораКода(ЭтотОбъект, "ПередЗаписьюОбъекта", Элементы.ПередЗаписьюОбъекта);
	УИ_РедакторКодаСервер.СоздатьЭлементыРедактораКода(ЭтотОбъект, "ПриЗаписиОбъекта", Элементы.ПриЗаписиОбъекта);

	Если РежимЗагрузки = 1 Тогда
		УИ_РедакторКодаСервер.СоздатьЭлементыРедактораКода(ЭтотОбъект,
														   "ПослеДобавленияСтроки",
														   Элементы.ПослеДобавленияСтроки);
	КонецЕсли;
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы
// Процедура - обаботчик события "ПриСменеСтраницы" в: Панель "Панель"
//
&НаКлиенте
Процедура ПанельПриСменеСтраницы(Элемент, ТекущаяСтраница)
	УстановитьНадписьТекстВыражения();
КонецПроцедуры

#КонецОбласти
#Область ОбработчикиКомандФормы
// Процедура - обаботчик события, при нажатии на кнопку "ОК" Командной панели "ОсновныеДействияФормы"
//
&НаКлиенте
Процедура ОсновныеДействияФормыОК(Команда)
	ПередЗаписьюОбъекта = ТекущийТекстВыражения("ПередЗаписьюОбъекта");
	ПриЗаписиОбъекта = ТекущийТекстВыражения("ПриЗаписиОбъекта");
	Если РежимЗагрузки = 1 Тогда
		ПослеДобавленияСтроки = ТекущийТекстВыражения("ПослеДобавленияСтроки");
	КонецЕсли;
	ОповеститьОВыборе(Новый Структура("Источник, Результат, ПередЗаписьюОбъекта, ПриЗаписиОбъекта, ПослеДобавленияСтроки",
		"ФормаРедактированияСобытий", Истина, ПередЗаписьюОбъекта,
		ПриЗаписиОбъекта, ПослеДобавленияСтроки));
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции
// Процедура устанавливает текст надписи текста выражения
//
&НаКлиенте
Процедура УстановитьНадписьТекстВыражения()
	Если РежимЗагрузки = 1 Тогда

		Если Элементы.ГруппаПанель.ТекущаяСтраница.Имя = "ГруппаПослеДобавленияСтроки" Тогда

			НадписьТекстВыражения =
			"В тексте выражения можно использовать следующие предопределенные параметры:
			|   Объект         - Записываемый объект
			|   ТекущиеДанные  - Содержит данные загружаемой строки табличной части.
			|   ТекстыЯчеек    - массив текстов ячеек строки
			|Встроенные функции, функции общих модулей.";
		Иначе

			НадписьТекстВыражения =
			"В тексте выражения можно использовать следующие предопределенные параметры:
			|   Объект         - Записываемый объект
			|   Отказ          - Признак отказа от записи объекта
			|Встроенные функции, функции общих модулей.";

		КонецЕсли;

	ИначеЕсли РежимЗагрузки = 0 Тогда

		НадписьТекстВыражения =
		"В тексте выражения можно использовать следующие предопределенные параметры:
		|   Объект         - Записываемый объект
		|   Отказ          - Признак отказа от записи объекта
		|   ТекстыЯчеек    - массив текстов ячеек строки
		|Встроенные функции, функции общих модулей.";

	ИначеЕсли РежимЗагрузки = 2 Тогда
		НадписьТекстВыражения =
		"В тексте выражения можно использовать следующие предопределенные параметры:
		|   Объект         - Менеджер записи регистра сведений
		|   Отказ          - Признак отказа от записи объекта
		|   ТекстыЯчеек    - массив текстов ячеек строки
		|Встроенные функции, функции общих модулей.";
	КонецЕсли;

КонецПроцедуры // ()


#Область РедакторКода

&НаКлиенте
Процедура УстановитьТекстРедактора(ИдентификаторРедактора, НовыйТекст, УстанавливатьОригинальныйТекст = Ложь,
	НовыйОригинальныйТекст = "")
	УИ_РедакторКодаКлиент.УстановитьТекстРедактора(ЭтотОбъект, ИдентификаторРедактора, НовыйТекст);

	Если УстанавливатьОригинальныйТекст Тогда
		УИ_РедакторКодаКлиент.УстановитьОригинальныйТекстРедактора(ЭтотОбъект,
																   ИдентификаторРедактора,
																   НовыйОригинальныйТекст);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Функция ТекущийТекстВыражения(ИдентификаторРедактора)
	Возврат УИ_РедакторКодаКлиент.ТекстКодаРедактора(ЭтотОбъект, ИдентификаторРедактора);
КонецФункции

//@skip-warning
&НаКлиенте
Процедура Подключаемый_ПолеРедактораДокументСформирован(Элемент)
	УИ_РедакторКодаКлиент.ПолеРедактораHTMLДокументСформирован(ЭтотОбъект, Элемент);
КонецПроцедуры

//@skip-warning
&НаКлиенте
Процедура Подключаемый_ПолеРедактораПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка)
	УИ_РедакторКодаКлиент.ПолеРедактораHTMLПриНажатии(ЭтотОбъект, Элемент, ДанныеСобытия, СтандартнаяОбработка);
КонецПроцедуры

//@skip-warning
&НаКлиенте
Процедура Подключаемый_РедакторКодаОтложеннаяИнициализацияРедакторов()
	УИ_РедакторКодаКлиент.РедакторКодаОтложеннаяИнициализацияРедакторов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_РедакторКодаЗавершениеИнициализацииРедактора(ИдентификаторРедактора) Экспорт
	УстановитьТекстРедактора("ПередЗаписьюОбъекта", ПередЗаписьюОбъекта, Истина, ПередЗаписьюОбъекта);
	УстановитьТекстРедактора("ПриЗаписиОбъекта", ПриЗаписиОбъекта, Истина, ПриЗаписиОбъекта);
	Если РежимЗагрузки = 1 Тогда
		УстановитьТекстРедактора("ПослеДобавленияСтроки", ПослеДобавленияСтроки, Истина, ПослеДобавленияСтроки);
	КонецЕсли;
	
	УИ_ДобавитьКонтекстПолей();
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_РедакторКодаОтложеннаяОбработкаСобытийРедактора() Экспорт
	УИ_РедакторКодаКлиент.ОтложеннаяОбработкаСобытийРедактора(ЭтотОбъект);
КонецПроцедуры

#КонецОбласти

&НаКлиенте
Функция ТипОбъектаЗаписи()
	Если ТипЗнч(ТипОбъекта) = Тип("Строка") Тогда
		Возврат ТипОбъекта;
	КонецЕсли;
	
	Типы = ТипОбъекта.Типы();
	Если Типы.Количество() > 0 Тогда
		Возврат Типы[0];
	Иначе
		Возврат "";
	КонецЕсли;
КонецФункции

&НаКлиенте
Процедура ДобавитьКонтекстПередЗаписью()
	СтруктураДополнительногоКонтекста = Новый Структура;

	ПустоеОписаниеТипов = Новый ОписаниеТипов;

	СтруктураДополнительногоКонтекста.Вставить("Отказ", "Булево");
	СтруктураДополнительногоКонтекста.Вставить("Объект", ТипОбъектаЗаписи());

	Если РежимЗагрузки <> 1 Тогда
		СтруктураПеременной = Новый Структура;
		СтруктураПеременной.Вставить("Тип", "Массив");
		СтруктураПеременной.Вставить("ПодчиненныеСвойства", Новый Структура);
		СтруктураДополнительногоКонтекста.Вставить("ТекстыЯчеек", СтруктураПеременной);
	КонецЕсли;

	УИ_РедакторКодаКлиент.ДобавитьКонтекстРедактораКода(ЭтотОбъект,
														"ПередЗаписьюОбъекта",
														СтруктураДополнительногоКонтекста);
КонецПроцедуры

&НаКлиенте
Процедура ДобавитьКонтекстПриЗиписи()
	СтруктураДополнительногоКонтекста = Новый Структура;

	ПустоеОписаниеТипов = Новый ОписаниеТипов;

	СтруктураДополнительногоКонтекста.Вставить("Отказ", "Булево");
	СтруктураДополнительногоКонтекста.Вставить("Объект", ТипОбъектаЗаписи());

	Если РежимЗагрузки <> 1 Тогда
		СтруктураПеременной = Новый Структура;
		СтруктураПеременной.Вставить("Тип", "Массив");
		СтруктураПеременной.Вставить("ПодчиненныеСвойства", Новый Структура);
		СтруктураДополнительногоКонтекста.Вставить("ТекстыЯчеек", СтруктураПеременной);
	КонецЕсли;

	УИ_РедакторКодаКлиент.ДобавитьКонтекстРедактораКода(ЭтотОбъект,
														"ПриЗаписиОбъекта",
														СтруктураДополнительногоКонтекста);
КонецПроцедуры

&НаКлиенте
Процедура ДобавитьКонтекстПослеДобавленияСтроки()
	СтруктураДополнительногоКонтекста = Новый Структура;

	ПустоеОписаниеТипов = Новый ОписаниеТипов;

//			НадписьТекстВыражения =
//			"В тексте выражения можно использовать следующие предопределенные параметры:
//			|   Объект         - Записываемый объект
//			|   ТекущиеДанные  - Содержит данные загружаемой строки табличной части.
//			|   ТекстыЯчеек    - массив текстов ячеек строки
//			|Встроенные функции, функции общих модулей.";

	СтруктураДополнительногоКонтекста.Вставить("Отказ", "Булево");
	СтруктураДополнительногоКонтекста.Вставить("Объект", ТипОбъектаЗаписи());

	Если РежимЗагрузки <> 1 Тогда
		СтруктураПеременной = Новый Структура;
		СтруктураПеременной.Вставить("Тип", "Массив");
		СтруктураПеременной.Вставить("ПодчиненныеСвойства", Новый Структура);
		СтруктураДополнительногоКонтекста.Вставить("ТекстыЯчеек", СтруктураПеременной);
	КонецЕсли;

	УИ_РедакторКодаКлиент.ДобавитьКонтекстРедактораКода(ЭтотОбъект,
														"ПриЗаписиОбъекта",
														СтруктураДополнительногоКонтекста);
КонецПроцедуры

&НаКлиенте
Процедура УИ_ДобавитьКонтекстПолей()
	ДобавитьКонтекстПередЗаписью();
	ДобавитьКонтекстПриЗиписи();
	Если РежимЗагрузки = 1 Тогда
		ДобавитьКонтекстПослеДобавленияСтроки();
	КонецЕсли;

КонецПроцедуры


#КонецОбласти

